package com.ehome.manage.module.utils.process.node;

import com.ehome.manage.module.utils.process.context.BaseProcessContext;

/**
 * 通过继承此类以声明任何流程的最终节点。
 * 此节点可选，若声明则在流程最后执行，相当于finally块。
 * 此节点抛出的异常只会打印日志，不会对外传播异常。
 *
 * @author xiaxinye
 * @version : BaseFinalNode.java,v 0.1 2019年12月28日 14:26
 */
public abstract class BaseFinalNode<T extends BaseProcessContext> implements ProcessNode<T> {

    @Override
    public String getName() {
        return CommonNodeName.FINAL;
    }

    @Override
    public NodeResult execute(T context) {
        finalExecution(context);
        return null;
    }

    /**
     * 流程的收尾逻辑
     *
     * @param context 流程上下文
     */
    public abstract void finalExecution(T context);

}
